home *** CD-ROM | disk | FTP | other *** search
Text File | 1995-03-06 | 9.4 KB | 158 lines | [TEXT/ALFA] |
-
- ********************************
- * Start regular words 2
- ********************************
-
- *
- * Word "abs" - return absolute value of top stack item
- *
-
- WORD63 ASC 'abs '
- DW ABS
-
- ABS JSR POPDATA
- TXA
- BPL GLOB_PUSH
-
- NEGATSUB TYA
- EOR #$FF
- CLC
- ADC #01
- TAY
- TXA
- EOR #$FF
- ADC #00
- TAX
-
- GLOB_PUSH JMP PUSHDATA
-
- *
- * Word "negate" - negate top value on stack
- *
-
- WORD64 ASC 'negate '
- DW NEGATE
-
- NEGATE JSR POPDATA
- BRA NEGATSUB
-
- *
- * Word "<" - comparison operator
- *
-
- WORD65 ASC '< '
- DW LESSTHAN
-
- LESSTHAN JSR POPDATA ; Fetch first signed integer
- STY PNTR
- STX PNTR+1
-
- JSR POPDATA ; Fetch second signed integer
-
- TXA ; Actual comparison done here
- EOR PNTR+1
- AND #$80
- BEQ :SAMESGN
-
- TXA
- BMI :TRUE
- BRA :FALSE
-
- :SAMESGN CPX PNTR+1
- BNE :NOCHKLO
- CPY PNTR
- :NOCHKLO BCC :TRUE
-
- :FALSE LDY #$00
- LDX #$00
- JMP PUSHDATA
-
- :TRUE LDY #$FF
- LDX #$FF
- JMP PUSHDATA
-
- *
- * Word ">" - comparison operator
- *
-
- WORD66 ASC '> '
- DW MORETHAN
-
- MORETHAN JSR POPDATA ; Fetch first signed integer
- STY PNTR
- STX PNTR+1
-
- JSR POPDATA ; Fetch second signed integer
-
- TXA ; Actual comparison done here
- EOR PNTR+1
- AND #$80
- BEQ :SAME
-
- TXA
- BPL :TRUE
- BRA :FALSE
-
- :SAME CPX PNTR+1
- BNE :NOCHKLO
- CPY PNTR
- :NOCHKLO BCC :FALSE
- BEQ :FALSE
-
- :TRUE LDY #$FF
- LDX #$FF
- JMP PUSHDATA
-
- :FALSE LDY #$00
- LDX #$00
- JMP PUSHDATA
-
- *
- * Word "=" - comparison operator
- *
- * Note: bypasses POPDATA, PUSHDATA for speed
- *
-
- WORD67 ASC '= '
- DW EQUAL
-
- EQUAL LDA DATITEMS ; Make sure there's at least
- CMP #02 ; two items on stack
- BCC :ERROR
-
- LDY DATSTACK
- LDA DATAAREA+1,Y
- CMP DATAAREA+3,Y
- BNE :FALSE
- LDA DATAAREA+2,Y
- CMP DATAAREA+4,Y
- BNE :FALSE
-
- LDA #$FF
- HEX 2C
- :FALSE LDA #00
- STA DATAAREA+3,Y
- STA DATAAREA+4,Y
-
- INY ; Adjust data stack pointer
- INY
- STY DATSTACK
-
- :SKIPINC DEC DATITEMS ; Adjust data items pointer
- RTS
-
- :ERROR LDA #04 ; "Data stack underflow"
- JMP PRTERR
-
- *
- * Word "<>" - comparison operator
- *
- * Note: bypasses POPDATA, PUSHDATA for speed
- *
-
- WORD68 ASC '<> '
- DW NOTEQUAL
-
- NOTEQUAL LDA DATITEMS ; Make sure there's at least
- CMP #02 ; two items on stack
- BC